Page({
  data: {
    messages: [],
    inputValue: '',
    scrollTop: 0,
    isTyping: false,
    recording: false,
    recordingTimer: null
  },

  onLoad: function() {
    // 初始化欢迎消息
    const welcomeMessage = {
      type: 'received',
      text: '您好！我是AI助手，有什么我可以帮您的吗？',
      time: this.formatTime(new Date()),
      avatar: '/assets/images/ai-avatar.png'
    };
    
    this.setData({
      messages: [welcomeMessage]
    });
  },

  onInput: function(e) {
    this.setData({
      inputValue: e.detail.value
    });
  },

  sendMessage: function() {
    const inputValue = this.data.inputValue.trim();
    if (!inputValue) return;

    // 添加用户消息
    const newMessages = [...this.data.messages, { 
      type: 'sent', 
      text: inputValue,
      time: this.formatTime(new Date()),
      avatar: '/assets/images/user-avatar.png'
    }];
    
    this.setData({
      messages: newMessages,
      inputValue: '',
      isTyping: true
    });

    // 使用smooth滚动方式，减少页面抖动
    this.setData({
      scrollTop: 999999
    });

    // 模拟AI回复（实际项目中这里应该调用AI接口）
    setTimeout(() => {
      const aiResponse = this.generateAIResponse(inputValue);
      this.setData({
        messages: [...this.data.messages, { 
          type: 'received', 
          text: aiResponse,
          time: this.formatTime(new Date()),
          avatar: '/assets/images/ai-avatar.png'
        }],
        isTyping: false
      });
      
      // 使用smooth滚动方式，减少页面抖动
      this.setData({
        scrollTop: 999999
      });
    }, 1500);
  },

  // 选择图片
  chooseImage: function() {
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0];
        
        // 添加图片消息
        const newMessages = [...this.data.messages, { 
          type: 'sent', 
          isImage: true,
          imageUrl: tempFilePath,
          time: this.formatTime(new Date()),
          avatar: '/assets/images/user-avatar.png'
        }];
        
        this.setData({
          messages: newMessages,
          isTyping: true
        });

        // 滚动到底部
        this.scrollToBottom();

        // 模拟AI回复
        setTimeout(() => {
          const aiResponse = '我收到了您发送的图片，这是一张很有趣的照片！';
          this.setData({
            messages: [...this.data.messages, { 
              type: 'received', 
              text: aiResponse,
              time: this.formatTime(new Date()),
              avatar: '/assets/images/ai-avatar.png'
            }],
            isTyping: false
          });
          
          // 滚动到底部
          this.scrollToBottom();
        }, 1500);
      }
    });
  },

  // 开始录音
  startRecord: function() {
    // 如果已经在录音，则不重复开始
    if (this.data.recording) {
      return;
    }
    
    this.setData({
      recording: true
    });

    // 开始录音
    wx.startRecord({
      success: (res) => {
        if (this.data.recording) {
          // 录音成功，转换为文字
          this.stopRecordSuccess(res.tempFilePath);
        }
      },
      fail: (err) => {
        console.error('录音失败', err);
        wx.showToast({
          title: '录音失败',
          icon: 'none'
        });
        
        // 失败时重置录音状态
        this.setData({
          recording: false
        });
      }
    });
    
    // 10秒后自动结束录音
    const timer = setTimeout(() => {
      if (this.data.recording) {
        this.stopRecord();
      }
    }, 10000);
    
    this.setData({
      recordingTimer: timer
    });
  },

  // 停止录音
  stopRecord: function() {
    wx.stopRecord();
    
    // 清除定时器
    if (this.data.recordingTimer) {
      clearTimeout(this.data.recordingTimer);
    }
    
    this.setData({
      recording: false,
      recordingTimer: null
    });
  },

  // 录音成功处理
  stopRecordSuccess: function(tempFilePath) {
    // 清除定时器
    if (this.data.recordingTimer) {
      clearTimeout(this.data.recordingTimer);
    }
    
    // 模拟语音识别结果
    const recognizedText = this.getRandomRecognizedText();
    
    // 添加识别后的文字消息
    const newMessages = [...this.data.messages, { 
      type: 'sent', 
      text: recognizedText,
      time: this.formatTime(new Date()),
      avatar: '/assets/images/user-avatar.png'
    }];
    
    this.setData({
      messages: newMessages,
      recording: false,
      recordingTimer: null,
      isTyping: true
    });

    // 滚动到底部
    this.scrollToBottom();

    // 模拟AI回复
    setTimeout(() => {
      const aiResponse = this.generateAIResponse(recognizedText);
      this.setData({
        messages: [...this.data.messages, { 
          type: 'received', 
          text: aiResponse,
          time: this.formatTime(new Date()),
          avatar: '/assets/images/ai-avatar.png'
        }],
        isTyping: false
      });
      
      // 滚动到底部
      this.scrollToBottom();
    }, 1500);
  },

  // 预览图片
  previewImage: function(e) {
    const imageUrl = e.currentTarget.dataset.url;
    wx.previewImage({
      urls: [imageUrl]
    });
  },

  // 模拟语音识别结果
  getRandomRecognizedText: function() {
    const texts = [
      '你好，我想咨询一下相关政策',
      '请问如何办理这项业务？',
      '我想了解一下服务流程',
      '请问有什么注意事项吗？',
      '能帮我解答一个问题吗？',
      '我需要查询我的办理进度',
      '请告诉我具体的办理步骤',
      '我想了解相关的费用情况'
    ];
    
    return texts[Math.floor(Math.random() * texts.length)];
  },

  generateAIResponse: function(userMessage) {
    // 这里应该实际调用AI接口，目前只是模拟回复
    const responses = [
      '我理解您的问题，正在为您处理。',
      '这是一个很好的问题，让我来帮您解答。',
      '感谢您的提问，我会尽力为您提供帮助。',
      '根据您提供的信息，我建议您可以尝试以下方法...',
      '这个问题我已经记录下来了，稍后会有专人为您解答。',
      '您提到的内容很有意思，让我详细为您分析一下。',
      '关于您的问题，我建议您参考以下几点内容...',
      '感谢您的耐心等待，现在为您解答这个问题。',
      '经过分析，我认为您可以从以下几个方面考虑...',
      '基于我的知识库，我可以为您提供以下建议...'
    ];
    
    return responses[Math.floor(Math.random() * responses.length)];
  },

  scrollToBottom: function() {
    // 使用更平滑的滚动方式
    this.setData({
      scrollTop: 999999
    });
  },

  formatTime: function(date) {
    const hours = date.getHours();
    const minutes = date.getMinutes();
    return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
  },

  onUnload: function() {
    // 页面卸载时停止录音
    if (this.data.recording) {
      this.stopRecord();
    }
    
    // 清除定时器
    if (this.data.recordingTimer) {
      clearTimeout(this.data.recordingTimer);
    }
  }
});